<?php

namespace App\Http\Controllers;

use App\Models\Common\Wechat;
use EasyWeChat\Kernel\Messages\Message;
use Illuminate\Support\Facades\Log;

class WeChatController extends Controller
{
    /**
     * 处理微信的请求消息
     * @return mixed
     */
    public function serve()
    {
        $app = Wechat::officialAccount();
        try{
            // 消息分类处理
            $app->server->push(function ($message) {
                switch ($message['MsgType']) {
                    case 'event': // 事件
                        return Wechat::responseEvent($message);
                        break;
                    case 'text':
                        return Wechat::responseText($message);
                        break;
//                    case 'image':
//                        return '收到图片消息';
//                        break;
//                    case 'voice':
//                        return '收到语音消息';
//                        break;
//                    case 'video':
//                        return '收到视频消息';
//                        break;
//                    case 'location':
//                        return '收到坐标消息';
//                        break;
//                    case 'link':
//                        return Wechat::responseLink($message);
//                        break;
//                    case 'file':
//                        return '收到文件消息';
//                    // ... 其它消息
                    default:
                        return false;
                        break;
                }
            });
            return $app->server->serve();
        }catch (\Exception $e){
            Log::error(WeChatController::class, ['msg' => $e->getMessage(), 'file' => $e->getFile(), 'line' => $e->getLine()]);
            return $app->server->serve();
        }
    }
}
